make(1) | 2007-10-27-16:31 | make(1) |
Назва¶
make - знаряддя make GNU для підтримки в робочому стані багаточисельних програм
Стисло¶
make [-f make-файл] [опції]... [адресати]...
Опис¶
Метою знаряддя make являється автоматичне визначення, які частини великої програми необхідно перекомпілювати, і віддати відповідні команди для їхньої компіляції. В цьому посібнику описано GNU втілення make, написане Richard Stallman і Roland McGrath. В прикладах використовуються C-програми, оскільки вони найпоширеніші, але ви можете вживати make з будь-якими мовами програмування, чий компілятор можна запустити за допомогою команд оболонки. Насправді, make не обмежується програмами. Ви можете використати його для опису якого-завгодно завдання, де якісь файли необхідно автоматично оновити з інших, коли ці інші змінено.
Для підготовки до використання make, необхідно створити make-файл, з описом взаємовідношень різноманітних файлів вашої програми, і командами для оновлення кожного з них. В програмах, типово, виконуваний файл оновлюється через об'єктні файли, які, у власну чергу, створено завдяки компіляції вихідних текстів програми.
Як тільки існуватиме задовільний make-файл, кожний раз, як ви поміняєте щось у вихідних текстах, вистачить простої оболонкової команди
make
make виконує команди make-файлу для того, щоб оновити одне або більше ім'я-адресат, де ім'ям, типово, являється програма. Якщо опція -f відсутня, make шукатиме make-файли GNUmakefile, makefile або Makefile (у поточному каталозі) саме в цій послідовності.
За звичайних обставин, вам слід назвати ваш make-файл як makefile або Makefile. (Ми радимо назву Makefile, оскільки її краще видно на початку переліку файлів каталогу, поруч з іншими важливими файлами, як скажімо README.) Перше ім'я, що перевіряється, не рекомендовано вживати в більшості випадків. Воно призначено для make-файлів, характерних для make GNU, не зрозумілих іншим версіям make. Якщо make-файл вказано як `-', читатиметься стандартний пристрій вводу.
Оновлення адресату залежить від складових, що можливо було модифіковано з часу останньої зміни самого адресату, або якщо адресату не існує.
Ключі¶
- -b
- -m
-
Ці ключі ігноруються заради сумісності з іншими версіями make. - -C каталог
-
Перейти до вказаного каталогу перед читанням make-файлів або здійсненням інших дій. Якщо задано декілька опцій -C, кожна інтерпретується відносно попередньої: -C / -C /etc рівнозначне -C /etc. Типово, використовується для рекурсивних викликів make. - -d
-
Вивести інформацію зневадження, наряду зі звичайною обробкою. Зневаджувальні повідомлення вказують, які файли необхідно оновити, які мітки часу порівнюються, які файли перекомпільовано, які правила застосовано - словом, все, що може видатись цікавим щодо операцій, здійснюваних make. - -f файл
-
Використати файл як make-файл. - -i
-
Ігнорує всі помилки команд, виконаних для оновлення файлів. - -I каталог
-
Вказує каталог для пошуку там make-файлів. Якщо використати декілька опцій -I, пошук здійснюватиметься у вказаному порядку. На відміну від аргументів решти прапорців make, каталоги, що стоять після -I можна друкувати одразу після прапорця, тобто дозволяється -Iкаталог, так само як -I каталог. Такий синтаксис передбачено для сумісності з прапорцем -I препроцесору C. - -j завдань
-
Вказує кількість завдань (команд), що можна одночасно запустити. Якщо існує більше однієї опції -j, остання візьме гору. Якщо ж вказати -j без аргументу, кількість процесів не обмежуватиметься. - -k
-
Продовжити, наскільки це можливо після помилки. Навіть, якщо адресат і те, що залежить від нього не можна перезібрати, решта взаємозалежностей цих адресатів буде оброблено як звичайно. - -l
- -l навантаження
-
Не розпочинатиме жодних завдань (команд), якщо виконуються інші, і середнє навантаження системи, щонайменше дорівнює вказаному (числу з плаваючою точкою). Без жодних аргументів, скасовує попереднє обмеження навантаження. - -n
-
Виведе команди, які би було виконано, але не виконуватиме їх. - -o файл
-
Не чіпати файл, навіть якщо він старший за залежні від нього, так само не перезбирати нічого, пов'язаного зі змінами у файлі. Фактично, файл вважатиметься дуже старим, і його правила ігноруватимуться. - -p
-
Виведе дані make-файлу (правила і значення змінних), після чого продовжити звичайне виконання, або таке, яке вказано. Це також виводить інформацію про версію make, ніби було вжито ключ -v (дивіться нижче). Щоб вивести дані make-файлу, без перезібрання, скористайтеся з "make -p -f/dev/null". - -q
-
Режим запиту. Не виконувати жодних команд, або виводити що-небудь; просто повернути статус рівний нулю, якщо адресати осучаснені, і ненульовий статус, якщо ні. - -r
-
Скасує використання вбудованих, прихованих правил. Також очистить стандартний список суфіксів, вживаних у суфіксних правилах. - -s
-
Безмовний режим; не друкуватиме команд під час їхнього виконання. - -S
-
Скасовує дію ключа -k. В цьому, звичайно, немає необхідності, за винятком рекурсивного make, де -k, можливо, успадковано від попереднього make рівнем вище, зі встановленою змінною MAKEFLAGS, або коли MAKEFLAGS вашого середовища включає -k. - -t
-
Зачіпає файли (помічає їх як сучасні, не змінюючи їх насправді), замість виконати, внесені там команди. Це застосовується для удавання, ніби команди було виконано, для того, щоб обманути наступні виклики make. - -v
-
Виводить версію програми make, а також авторські права, список авторів, і попередження про відсутність гарантії. - -w
-
Виведе повідомлення з вказівкою робочого каталогу до і після іншої обробки. Це може виявитись корисним для виявлення помилок під час складного гніздування, або рекурсивних викликів make. - -W файл
-
Прикинутись, ніби адресований файл щойно модифіковано. При використанні з прапорцем -n, це продемонструє, що би сталося, якби ви змінили цей файл. Без -n, це рівнозначно виконанню команди touch(1) перед запуском make, за винятком того, що час модифікації змінено тільки в уяві make .
Дивіться також¶
Посібник make GNU
Вади¶
Дивіться розділ "Проблеми і вади" в "Посібнику make GNU".
Автор¶
Цю сторінку посібника складено Dennis Morse зi Стенфордського Університету, і допрацьовано Roland McGrath.
2007-10-27-16:31 | © 2005-2007 DLOU, GNU FDL |